package com.cqjybigscreen.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.cqjybigscreen.pojo.dto.*;
import com.cqjybigscreen.pojo.entity.AdsCqwlChannel;
import com.cqjybigscreen.pojo.vo.BoxTrendVO;
import com.cqjybigscreen.pojo.vo.BoxVolumeVO;
import com.cqjybigscreen.pojo.vo.LineNameSumMarVO;
import com.cqjybigscreen.pojo.vo.YearStatisticsVO;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

/**
 * <p>
 * 四向通道汇总 服务类
 * </p>
 *
 * @author RaoChang
 */
public interface AdsCqwlChannelService extends IService<AdsCqwlChannel> {
    /**
     * 获取箱量走势图
     */
    List<BoxVolumeVO> getBoxVolume(BoxVolumeDTO dto);

    /**
     * 获取今年最新的走向图
     * @param startYear 今年上个月开始时间
     * @param endYear 今年结束时间
     * @param startLastYear 去年开始时间
     * @param endLastYear 去年结束时间
     * @param startMonth 这个月开始时间
     * @param endMonth 这个月结束时间
     * @param startLastMonth 上个月开始时间
     * @param endLastMonth 上个月结束时间
     * @return  List<BoxTrendVO>
     */
    List<BoxTrendVO> getBoxTrend(LocalDate startYear,LocalDate endYear, LocalDate startLastYear,LocalDate endLastYear,LocalDate startMonth,LocalDate endMonth,LocalDate startLastMonth,LocalDate endLastMonth);

    /**
     * 精品路线列表
     * @param dto 方位包装
     * @return List<BoxVolumeVO>
     */
    List<BoxVolumeVO> premiumRouteList(BoxTrendDto dto);

    /**
     * 大屏1右3 运输方式
     * @return List<BoxVolumeVO>
     */
    List<BoxVolumeVO> getTransportationMode();

    /**
     * 大屏1中间年度统计
     * @return List<YearStatisticsVO>
     */
    List<YearStatisticsVO> getYearStatistics(BoxTrendDto dto);

    /**
     *    大屏1右2精品路线详情
     *    目前按照传入终点,查询终点站是传入值的所有路线信息
     * @param dto 获取里面的终点站destinationStation
     * @return List<BoxVolumeVO>
     */
    List<BoxVolumeVO> premiumRouteDetails(RouteDTO dto);

    /**
     *物流大屏2左1箱量走势
     * @param dto  type:1:近30天 2:最近3个月 3:最近1年  destinationStation:目的地
     * @return  List<DataGroupDTO> 按照前端给定格式返回
     */
    List<DataGroupDTO> boxPlotDataWithRoute(BoxVolumeDTO dto);

    /**
     * 物流大屏2左2 近半年货运量同比环比
     * @param   dto: 目的地
     * @return List<Map<String, Object>>
     */
    List<Map<String, Object>> getBoxTrendWithRoute(RouteDTO dto);

    /**
     * 大屏2中间获取线路
     * @param dto destinationStation 借用表示路过站点
     *
     */
    LineNameSumMarVO getMapList(PortStationDTO dto);

    /**
     * 获取货物排行榜
     * @return  List<BoxVolumeVO>
     */
    List<BoxVolumeVO> getGoodsRanking(RouteDTO dto);

}
